package com.hopechart.micro.util;

/**
 * <p>
 *     <br/>地图操作工具类
 * </p>
 * @author daijiang@hopechart.com
 * @date 2017-10-30 09:46:09
 * @copyright 杭州鸿泉数字设备有限公司
 * @version V1.0.0
 */
public class MapUtil {

	private static double EARTH_RADIUS = 6371.393;

	private static double rad(double d) {
		return d * Math.PI / 180.0;
	}

	/**
	 * 计算两个经纬度之间的距离 单位 千米
	 *
	 * @param lat1
	 *            纬度1
	 * @param lng1
	 *            经度1
	 * @param lat2
	 *            纬度2
	 * @param lng2
	 *            经度2
	 * @return
	 */
	public static double getDistance(double lat1, double lng1, double lat2, double lng2) {

        if(lat1 <= 0 || lng1 <= 0 || lat2 <= 0 || lng2 <= 0) {
            return 0.0;
        }

		double radLat1 = rad(lat1);
		double radLat2 = rad(lat2);
		double a = radLat1 - radLat2;
		double b = rad(lng1) - rad(lng2);
		double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2)
				* Math.pow(Math.sin(b / 2), 2)));
		s = s * EARTH_RADIUS;
		s = Math.round(s * 10000d) / 10000d;
		// s = s * 1000;
		return s;
	}
}
